package model;



import java.util.ArrayList;
import java.util.Calendar;

public class Avtale {
	private String eier;
	private int id;
	private String beskrivelse;
	private String sted;
	private Calendar dato;
	private int start;
	private int slutt;
	private ArrayList<Deltager> deltagere;
	private Boolean mote;
	
	public Avtale(){
		this.id = (int) (Math.random() * 1000);

	}
	
	
	public Avtale(String eier, String beskrivelse, String sted ,int dag, int mnd, int aar,int start, int slutt){
		
		deltagere = new ArrayList<Deltager>();
		
		dato = Calendar.getInstance();
		dato.clear(); 
		this.id = (int) (Math.random() * 1000);
		dato.set(Calendar.MONTH, mnd);
		dato.set(Calendar.YEAR, aar);
		dato.set(Calendar.DAY_OF_MONTH, dag);
		
		this.eier = eier;
		this.sted = sted;
		this.beskrivelse = beskrivelse;
		
		this.start = start;
		this.slutt = slutt;
	}
	
	public Avtale(String eier,int id, String beskrivelse, String sted, Calendar dato, int start, int slutt){
		
		deltagere = new ArrayList<Deltager>();
		
		this.eier = eier;
		this.id = id;
		this.beskrivelse =beskrivelse;
		this.sted = sted;
		this.dato = dato; 
		this.start = start;
		this.slutt = slutt;
		mote = false;
	}
	
	public Avtale(String eier,int id, String beskrivelse, String sted, Calendar dato, int start, int slutt, ArrayList<Deltager> deltagere){
		this.eier = eier;
		this.id = id;
		this.beskrivelse =beskrivelse;
		this.sted = sted;
		this.dato = dato; 
		this.start = start;
		this.slutt = slutt;
		this.deltagere = deltagere;
		if (deltagere != null && deltagere.size() > 0){
			mote = true;
		}
	}

	
	public String getEier() {
		return eier;
	}
	public void setEier(String eier) {
		this.eier = eier;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getBeskrivelse() {
		return beskrivelse;
	}
	public void setBeskrivelse(String beskrivelse) {
		this.beskrivelse = beskrivelse;
	}
	public String getSted() {
		return sted;
	}
	public void setSted(String sted) {
		this.sted = sted;
	}
	public Calendar getDato() {
		return dato;
	}
	public void setDato(Calendar dato) {
		this.dato = dato;
	}
	public int getStart() {
		return start;
	}
	public void setStart(int start) {
		this.start = start;
	}
	public int getSlutt() {
		return slutt;
	}
	public void setSlutt(int slutt) {
		this.slutt = slutt;
	}
	public ArrayList<Deltager> getDeltagere() {
		return deltagere;
	}
	public void setDeltagere(ArrayList<Deltager> deltagere) {
		this.deltagere = deltagere;
	}
	public Boolean getMote() {
		return mote;
	}
	public void setMote(Boolean mote) {
		this.mote = mote;
	}
	
	public void leggeTilDeltagere(Deltager deltager){
		deltagere.add(deltager);
	}
	
	public void fjernDeltagere(Deltager deltager){
		deltagere.remove(deltager);
	}
	
	public boolean equals(Object avtalen){
		if (!(avtalen instanceof Avtale)){
			return false;
		}
		Avtale avtale = (Avtale)avtalen;
		return 	eier.equals(avtale.getEier()) && 
				id == avtale.getId() && 
				beskrivelse.equals(avtale.getBeskrivelse()) && 
				sted.equals(avtale.getSted()) && 
				sammeDato(avtale.getDato()) && 
				start == avtale.getStart() && 
				slutt == avtale.getSlutt() && 
				deltagere.equals(avtale.getDeltagere());
	}	
	
	private boolean sammeDato(Calendar dato){
		return this.dato.get(Calendar.DATE) == dato.get(Calendar.DATE) &&
				this.dato.get(Calendar.DAY_OF_MONTH) == dato.get(Calendar.DAY_OF_MONTH) &&
				this.dato.get(Calendar.YEAR) == dato.get(Calendar.YEAR);
	}
	
	public String toString(){
		
		return this.id + " : " + this.eier + " : " + this.beskrivelse +" :" + this.sted +": " + dato.get(Calendar.DATE) +": " + dato.get(Calendar.MONTH) +": " + dato.get(Calendar.YEAR) +": "+this.start+": " + this.slutt;
	}
}